package com.hex.ds.hdtp.core.app.data.contrast.converter;

import com.hex.ds.hdtp.core.app.data.contrast.dto.ContrastTemplateExcelDto;
import com.hex.ds.hdtp.core.app.data.contrast.dto.ContrastTemplateImportExcelDto;
import com.hex.ds.hdtp.core.app.data.contrast.dto.request.CrossDbContrastRunLogRequestDto;
import com.hex.ds.hdtp.core.app.data.contrast.dto.request.CrossDbContrastTemplateRequestDto;
import com.hex.ds.hdtp.core.app.data.contrast.dto.response.CrossDbContrastTemplateResponseDto;
import com.hex.ds.hdtp.core.inf.data.contrast.po.CrossDbContrastTemplatePo;
import org.mapstruct.Mapper;
import org.mapstruct.Mapping;

import java.util.List;

/**
 * @Package: com.hex.ds.hdtp.core.app.data.contrast.converter
 * @ClassName ICrossDbContrastTemplateConverter
 * @Description: 跨库比对模板-DTO对象转PO对象转换器
 * @Author: wz.li
 * @Date 2023/7/25 19:43
 * @Version v2.0.2
 **/
@Mapper(componentModel = "spring")
public interface ICrossDbContrastTemplateConverter {

    /*
     * @Method: toCrossDbContrastTemplatePo <br>
     * @Param: [crossDbContrastTemplateRequestDto] <br>
     * @Return: com.hex.ds.hdtp.core.inf.data.contrast.po.CrossDbContrastTemplatePo <br>
     * @Description：RequestDto对象转Po对象<br>
     * @Author： wz.li<br>
     * @Date： 2023/7/25 19:43 <br>
     * @Version： V2.0.2<br>
     */
    CrossDbContrastTemplatePo toCrossDbContrastTemplatePo(CrossDbContrastTemplateRequestDto crossDbContrastTemplateRequestDto);

    /*
     * @Method: toCrossDbContrastTemplateResponseDtoList <br>
     * @Param: [crossDbContrastTemplatePos] <br>
     * @Return: java.util.List<com.hex.ds.hdtp.core.app.data.contrast.dto.response.CrossDbContrastTemplateResponseDto> <br>
     * @Description：PO对象集合转换ResponseDto对象集合<br>
     * @Author： wz.li<br>
     * @Date： 2023/7/25 19:44 <br>
     * @Version： V2.0.2<br>
     */
    List<CrossDbContrastTemplateResponseDto> toCrossDbContrastTemplateResponseDtoList(List<CrossDbContrastTemplatePo> crossDbContrastTemplatePos);

    /*
     * @Method: toCrossDbContrastTemplateResponseDto <br>
     * @Param: [crossDbContrastTemplatePo] <br>
     * @Return: com.hex.ds.hdtp.core.app.data.contrast.dto.response.CrossDbContrastTemplateResponseDto <br>
     * @Description：PO对象转换ResponseDto对象<br>
     * @Author： wz.li<br>
     * @Date： 2023/7/26 14:00 <br>
     * @Version： V2.0.2<br>
     */
    CrossDbContrastTemplateResponseDto toCrossDbContrastTemplateResponseDto(CrossDbContrastTemplatePo crossDbContrastTemplatePo);

    /**
     * @Method toCrossDbContrastRunLogRequestDto
     * @Param
     * @param crossDbContrastTemplateResponseDto
     * @Return com.hex.ds.hdtp.core.app.data.contrast.dto.request.CrossDbContrastRunLogRequestDto
     * @Description CrossDbContrastTemplate的ResponseDto对象转为CrossDbContrastRunLog的RequestDto对象
     * @Author Wang zhihao
     * @Date 2023/8/1 11:22
     * @Version V1.0
     */
    @Mapping(target = "pkId", ignore = true)
    @Mapping(target = "templatePkId", source = "pkId")
    @Mapping(target = "contrastType", source = "isCycleContrast")
    @Mapping(target = "dataRange", source = "isMaxFaultTolerance")
    CrossDbContrastRunLogRequestDto toCrossDbContrastRunLogRequestDto(CrossDbContrastTemplateResponseDto crossDbContrastTemplateResponseDto);

    ContrastTemplateExcelDto toContrastTemplateExcelDto(CrossDbContrastTemplateResponseDto crossDbContrastTemplateResponseDto,Integer index);

    CrossDbContrastTemplateRequestDto toCrossDbContrastTemplateRequestDto(ContrastTemplateImportExcelDto contrastTemplateImportExcelDto);
}
